﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTServicesMov.Dominio;
using RESTServicesMov.Persistencia;
using System.Data.SqlClient;
using System.Data;

namespace RESTServicesMov.Persistencia
{
    public class ConsultaDAO
    {
       

       public DataSet obtenersql(string sql)
        {
            SqlConnection sqlConn = new SqlConnection(ConexionBD.ObtenerCadena());
            SqlDataAdapter sqlAdapt = new SqlDataAdapter(sql, sqlConn);
            SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlAdapt);
            DataSet sqlSet = new DataSet();
            sqlAdapt.Fill(sqlSet);
            sqlAdapt.Dispose();
            sqlConn.Close();
            return sqlSet;
        }

        public List<ConsultaCS> ConsultarProducto(int codigo, MSProducto.Producto productoin)
        {
            List<ConsultaCS> ConsList = new List<ConsultaCS>();
            ConsultaCS consultaEncontrada = null;
            CentroDAO dao = new CentroDAO();
            Centro centroEncontrado;
            int idcentro;
            string sql = "SELECT  idProducto, idCentro, (StockActual - StockMin) as disponible FROM CENTRO_PRODUCTO WHERE idProducto=@cod";
            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {

                        while (resultado.Read())
                        {
                            idcentro = int.Parse(resultado["idCentro"].ToString());
                            centroEncontrado = dao.ObtenerCentro(idcentro);

                            consultaEncontrada = new ConsultaCS()
                            {
                                idCentro = idcentro,
                                idProducto = int.Parse(resultado["idProducto"].ToString()),
                                producto = productoin,
                                centro = centroEncontrado,
                                disponible = Decimal.Parse(resultado["disponible"].ToString())
                            };
                            ConsList.Add(consultaEncontrada);
                        }
                               }
                }

            }

            return ConsList;
        }

        public List<ConsultaCS> ListarTodos()
        {
            List<ConsultaCS> consultas = new List<ConsultaCS>();
            string sql = @"SELECT * FROM CENTRO_PRODUCTO WHERE idProducto=10001";
            DataSet dataset = obtenersql(sql);
            if (dataset != null)
            {
                if (dataset.Tables[0] != null)
                {
                    if (dataset.Tables[0].Rows.Count > 0)
                    {
                        DataTable dt = dataset.Tables[0];
                        if (dt != null)
                        {
                            if (dt.Rows.Count > 0)
                            {
                                foreach (DataRow row in dt.Rows)
                                {
                                    ConsultaCS consultadas = new ConsultaCS();
                                    consultadas.idProducto = Convert.ToInt32(row[0]);
                                    consultadas.idCentro = Convert.ToInt32(row[1]);
                                    consultadas.disponible = Convert.ToDecimal(row[2]);
                                    consultas.Add(consultadas);
                                }
                            }
                        }
                    }
                }
            }
            return consultas;
        }
    }
}